package practpl.diez;

import java.io.FileNotFoundException;
import java.io.IOException;

import org.antlr.runtime.ANTLRFileStream;
import org.antlr.runtime.CharStream;
import org.antlr.runtime.CommonTokenStream;
import org.antlr.runtime.RecognitionException;
import org.antlr.runtime.tree.CommonTree;

import antlr.ANTLRException;


public class Procesador10 
{
	public static void main(String args[]) throws RecognitionException, IOException, ANTLRException {

		try {
			CharStream fis = new ANTLRFileStream(args[0]);
			CommonTokenStream tokens = new CommonTokenStream();
			
			if (args[0].equals("entrada.txt")) {
				AnalizadorLexer analex = new AnalizadorLexer(fis);
				tokens.setTokenSource(analex);
				AnalizadorParser anasint = new AnalizadorParser(tokens);
			
				anasint.setTreeAdaptor(new MiArbolAdaptor(args[0]));
				AnalizadorParser.instrucciones_return r = anasint.instrucciones();                     

				CommonTree arbol = (CommonTree) r.getTree();
				System.out.println(arbol.toStringTree());
				
                ASTFrame ventana = new ASTFrame("ArbolExpresiones", arbol);
                ventana.setSize(600, 300);
                ventana.setVisible(true);
				
			}
			
			if (args[0].equals("ejemploC.txt")) {
				CParser anasintC = new CParser(tokens);
				CLexer analexC = new CLexer(fis);
				tokens.setTokenSource(analexC);
				
				anasintC.setTreeAdaptor(new MiArbolAdaptor(args[0]));
				CParser.entrada_return r = anasintC.entrada();                   

				CommonTree arbol = (CommonTree) r.getTree();
				System.out.println(arbol.toStringTree());
				
                ASTFrame ventana = new ASTFrame("Árbol Código C", arbol);
                ventana.setSize(600, 300);
                ventana.setVisible(true);
	
			}
			
			if (args[0].equals("ejemploXML.txt")) {
				XMLParser anasintxml = new XMLParser(tokens);
				XMLLexer analexxml = new XMLLexer(fis);
				tokens.setTokenSource(analexxml);
				
				anasintxml.setTreeAdaptor(new MiArbolAdaptor(args[0]));
				XMLParser.biblioteca_return r = anasintxml.biblioteca();                   

				CommonTree arbol = (CommonTree) r.getTree();
				System.out.println(arbol.toStringTree());
				
                ASTFrame ventana = new ASTFrame("Árbol Código XML", arbol);
                ventana.setSize(600, 300);
                ventana.setVisible(true);
			}
		}
		
		catch(FileNotFoundException fnfe) {
			System.err.println("No se encontró el fichero");	
		}
	}
}
